import {Config} from 'config'
class Token{
  constructor(){
  }


  _checkTokenValid(token,fn){
    wx.request({
      url: Config.baseUrl + 'token/verify',
      method:'POST',
      data: { token: token },
      success:(res)=>{
        if (!res.data.isValid){
          // token过期
          this.getToken(fn)
        }
      },
      fail:(res)=>{
        console.log(res)
      }
    })
  }



// 不在缓存 、失效
  verify(fn){
    var token = wx.getStorageSync('token')
    if(token){
      // token 已经在缓存了   有没有失效
      this._checkTokenValid(token, fn)
    } else{
      // token 不存在
      this.getToken(fn)
    }
  }

  getToken(fn) {
    wx.login({
      success: (res) =>{
        if (res.code) {
          wx.request({
            url: Config.baseUrl + 'token/user',
            method: 'POST',
            data: { code: res.code },
            success: (res) => {
              if (res.data.token){
                wx.setStorageSync('token', res.data.token)
                fn && fn(res.data.token)
              }
              // 没有获取到token
              else{
                this._toast()
              }
            },
            fail: function (res) {
              console.log(res)
            }
          })
        }
        else{
          // code 获取失败
          this._toast()
        }
      },
      fail: function (res) {
        console.log(res)
      }
    })
  }


  _toast() {
    wx.showToast({
      title: "服务器错误，请稍后重试",
      icon: "none",
      duration: 2000
    })
  }
}

export { Token }

        